#include<bits/stdc++.h>

using namespace std;
const int N=30;
map<int,int>s;
int n,x;
void build(int id,int x){
	if(!s.count(id)){
		s[id]=x;
		return ;
	}
	if(s[id]<x)build(2*id,x);
	else build(2*id+1,x);
}
int main(){
	cin>>n;
	for(int i=0;i<n;i++){
	   cin>>x;
	   build(1,x);
	}
	int flag=0,t=1;
	cout<<s[t];
	for(auto j:s){
		if(j.first==1)continue;
		if(j.first!=t+1)flag=1;
		t=j.first;
		cout<<" "<<j.second;
	}
	if(flag)puts("NO");
	else puts("YES");
	return 0;
}
